$(function () {
	// 购物车初始数据请求
	getData();
	//实现全选全不选效果，为“全选”按钮绑定click事件
	$(".selectAll").on("click", function () {
		selectALL();
	});
	//为购物车列表中每个商品前的多选按钮绑定click事件，点击时调用检查是否全选自定义方法check()
	$("body").on("click", "input[name=check]", function () {
		check();
	});
	//为购物车列表中所有的多选按钮绑定click事件，调用计算总价自定义方法countTotalprice()
	$("body").on("click", "input[type=checkbox]", function () {
		countTotalprice();
	});
	//为购物车列表每个商品的“数量”数字框绑定change事件，当数量发生变化时调用“小计”subtotal()方法
	$("body").on("change", "input[type=number]", function () {
		subtotal($(this));
	});
	//为页面中的“删除”链接绑定click事件，通过closest()遍历方法获取当前“删除”链接的父辈节点".item"的data属性值，并调用删除函数删除该项商品
	$("body").on("click", ".del", function () {
		var sc_id = $(this).closest(".item").attr("data");
		del(sc_id);
		return false;
	});
	//实现删除选中的商品效果，为“删除选中的商品”链接绑定click事件
	$("#delcheck").on("click", function () {
		var $cks = $("#listBox input[type=checkbox]");
		//通过each()遍历方法遍历每个购物车商品的多选按钮，判断其是否选中，如果是则调用删除函数删除该项商品
		$cks.each(function () {
			//通过closest()遍历方法获取当前节点的父辈节点".item"的data属性值(即购物车列表商品ID)
			var sc_id = $(this).closest(".item").attr("data");
			if ($(this).is(":checked")) {
				del(sc_id);
			}
		});
	});
});

//读取购物车列表
function getData() {
	$.ajax({
		url: 'http://localhost/shoppingcar/list/',
		type: 'GET',
		// 成功回调
		success: function (res) {
			let html = splicingHtml(res);
			$("#listBox").html(html);
			check();
			countTotalprice();
		},
		// 失败回调
		error: function (e) {
			console.log(e);
		}
	})
}

// 字符串拼接
function splicingHtml(data) {
	let html = '';
	for (let i = 0; i < data.length; i++) {
		html += "<div class='item' data='" + data[i].sc_id + "'>\
		          <div><input type='checkbox' name='check' checked></div>\
				  <div><img src='" + data[i].p_img + "' height='100'></div>\
				  <div>" + data[i].p_name + "</div>\
				  <div>¥<span class='price'>" + data[i].p_price + "</span></div>\
				  <div><input type='number' value='" + data[i].sc_count + "' min='1'></div>\
				  <div>¥<span class='subtotal'>" + (data[i].p_price * data[i].sc_count).toFixed(2) + "</span></div>\
				  <div><a href='#' class='del'>删除</a></div>\
				 </div>";
	}
	return html;
}

//  添加购物车
function add(pid) {
	$.ajax({
		url: "http://localhost/shoppingcar/add/",
		type: 'GET',
		data: {
			sc_pid: pid
		},
		// 成功回调
		success: function (res) {
			console.log(res);
			getData();
		},
		// 失败回调
		error: function (e) {
			console.log(e);
		}
	})
}

// 删除购物车
function del(sc_id) {
	$.ajax({
		url: "http://localhost/shoppingcar/del/",
		type: 'GET',
		data: {
			sc_id: sc_id
		},
		// 成功回调
		success: function (res) {
			console.log(res);
			getData();
		},
		// 失败回调
		error: function (e) {
			console.log(e);
		}
	})
}

// 修改购物车数量
function modi(sc_id, sc_count) {
	$.ajax({
		url: "http://localhost/shoppingcar/modi/",
		type: 'GET',
		data: {
			sc_id: sc_id,
			sc_count: sc_count
		},
		// 成功回调
		success: function (res) {
			console.log(res);
			// getData();
		},
		// 失败回调
		error: function (e) {
			console.log(e);
		}
	})
}

//单项小计函数
function subtotal($this) {
	var price = $this.closest(".item").find("span.price").text();
	var subtotal = $this.closest(".item").find("span.subtotal");
	var total = parseFloat(price) * $this.val();
	subtotal.html(total.toFixed(2));
	countTotalprice();
	modi($this.closest(".item").attr("data"), $this.val());
}

//计算总价函数
function countTotalprice() {
	var $cks = $("#listBox input[type=checkbox]");
	var totalprice = 0;
	$cks.each(function () {
		if ($(this).is(":checked")) {
			var price = $(this).closest(".item").find("span.subtotal").text();
			totalprice += parseFloat(price);
			$("#totalprice").html(totalprice.toFixed(2));
		} else {
			$("#totalprice").html(totalprice.toFixed(2));
		}
	});
	//删除购物车内所选商品时让总计归零
	if (totalprice == 0) {
		$("#totalprice").html(totalprice.toFixed(2));
	}
}

//“全选”函数
function selectALL() {
	//获取购物车列表中所有多选按钮
	var $cks = $("#listBox input[type=checkbox]");
	//判断是否为已选中状态，如果是则去除其checked属性，否则将其checked属性改为true。
	if ($cks.is(":checked")) {
		$cks.removeAttr("checked");
		$(".selectAll").removeAttr("checked");
	}
	else {
		$cks.prop("checked", "true");
		$(".selectAll").prop("checked", "true");
	}
}

//判断是否全选函数
function check() {
	var oInput = $("input[name=check]");
	var C = 0;
	for (var i = 0; i < oInput.length; i++) {
		if (oInput[i].checked == true) { C = C + 1; }
	}
	if (C == oInput.length) {
		$(".selectAll").prop("checked", "true");
	}
	else { $(".selectAll").removeAttr("checked"); }
	if (C == 0) { $(".selectAll").removeAttr("checked"); }
}